// 定义状态，nxut中声明state必须是function
const state = () => ({
    userInfo: null, // 用户信息对象
    accessToken: null, // 访问令牌字符串
    refreshToken: null, // 刷新令牌字符串
})
// 改变状态值
const mutations = {
    // 重置用户状态
    RESET_USER_STATE(state) {
        // 状态置空
        state.userInfo = null
        state.accessToken = null
        state.refreshToken = null
    },
    // 刷新页面后，重新更新状态
    UPDATE_ALL_STATE(state, data) {
        state.userInfo = data.userInfo
        state.accessToken = data.accessToken
        state.refreshToken = data.refreshToken
    },
}
// 定义行为
const actions = {
    // 跳转到登录页
    LoginPage({ commit }) { // 不要少了花括号{commit}
        // 重置用户状态
        commit('RESET_USER_STATE')
        // 跳转登录页，redirectURL 引发跳转到登录页的URL
        window.location.href =
            `${process.env.authURL}?redirectURL=${window.location.href}`
    },
    //通过cookie-universal-nuxt获取cookie数据
    //服务端调用生命周期函数
    nuxtServerInit({ commit }, { app }) {
        const data = {}
        //获取cookie
        data.userInfo = app.$cookies.get('userInfo')
        data.accessToken = app.$cookies.get('accessToken')
        data.refreshToken = app.$cookies.get('refreshToken')
        //保存cookie到仓库
        commit('UPDATE_ALL_STATE', data)
    },
    //退出登录操作
    Logout({ commit }) {
        // 重置用户状态
        commit('RESET_USER_STATE')
        // 路由跳转退出，redirectURL 引发跳转到登录页的URL
        window.location.href =
            `${process.env.authURL}/logout?redirectURL=${window.location.href}`
    }
}
export default {
    state,
    mutations,
    actions
}